#ifndef __HIKARI_MAIN_HEADER
#define __HIKARI_MAIN_HEADER
#include "reflection.h"
#include "reflection_db.h"
#include "reflection_string.h"

#include <iostream>
#include <irrlicht.h>
using namespace std;
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;

#include<hash_map>
using namespace stdext;
#include <btBulletDynamicsCommon.h>
#include "utils.h"
#include "HikariEventReceiver.h"
#include "AnimationTrack.h"
#include "AnimationManager.h"
#include "NavmeshManager.h"
#include "HikariContext.h"

#include "HObj.h"
#include "HObjCamera.h"

#include "utf8.h"
#include "HikariFileReader.h"
#include "FileSection.h"
#include "RandomFileAccess.h"
#include "HikariSceneLoader.h"
#include "ObjectCreators.h"
#include "IrrlichtInitializer.h"
#include "BaseHikariScript.h"
#include "ScriptManager.h"
#include "hComponent.h"
#include "ScriptHComponent.h"
#include "BulletPhysicsHComponent.h"
#include "PathFindAgentComponent.h"



class Hikari{
public:
	static bool loadScene(wstring sceneName, HikariContext*context);
	static HObj* instantiateTemplate(wstring&path, HikariContext*context, vector3df&position, vector3df&rotation);
	static HObj* instantiateTemplate(const wchar_t*path, HikariContext*context, vector3df&position, vector3df&rotation);
	static void removeObject(HObj*object, HikariContext*context);
};
#endif